#ifndef ESTRATEGIARECURSO_H_
#define ESTRATEGIARECURSO_H_

class RecursoAlmacenamiento;
class Dato;
class Clave;

namespace Toolkit
{

class EstrategiaRecurso
{

public:
    EstrategiaRecurso(RecursoAlmacenamiento* recurso);
    virtual ~EstrategiaRecurso();

    virtual unsigned long int guardarDato(const Dato &dato, const Clave &clave) = 0;
    virtual void recuperarDato(const Clave &clave, Dato &dato) const = 0;
    virtual void eliminarDato(const Clave &clave) = 0;
    virtual void actualizarDato(const Dato &dato, const Clave &clave) = 0;

    RecursoAlmacenamiento* getRecurso();

private:
    RecursoAlmacenamiento* recurso;

};

}
#endif /* ESTRATEGIARECURSO_H_ */
